// 配置的css 可以在某个类型的组件上配置css样式 类名和标签名一致
const styles = {
    'el-rate': '.el-rate{display: inline-block; vertical-align: text-top;}',
    'el-upload': '.el-upload__tip{line-height: 1.2;}'
}

function addCss(cssList, el) {
    // 找到和tag名相同的
    const css = styles[el.__config__.tag]
    // 若存在css 但是不在cssList中 就push进去
    css && cssList.indexOf(css) === -1 && cssList.push(css) 
    // 有children 递归
    if(el.__config__.children) {
        el.__config__.children.forEach(el2 => addCss(cssList,el2))
    }
}

export function makeUpCss(conf) {
    // 定义css数组
    const cssList = [];
    // 每个el若配置了styles 就全部push到cssList中去
    conf.fields.forEach(el => addCss(cssList, el))
    // 将数组转成字符串
    return cssList.join('\n')
}